Taxonomy Ranks:

King Phillip Can nOt Find Green Socks

  • Kingdom
  • Phylum
  • Class
  • Order
  • Family
  • Genus
  • Species

Richness

Relative Abundance in Samples at Different Taxonomic Ranks

1. Class

2. Order

3. Family

4. Genus

Mean Relative Abundances

1. Mean Class

2. Mean Order

3. Mean Family

4. Mean Genus

LS0tDQp0aXRsZTogIk5yZjIgQkw2IFBFSVRDIDE2UyBNaWNyb2Jpb21lIERhdGEgVmlzdWFsaXphdGlvbiINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdA0KICBodG1sX2RvY3VtZW50Og0KICAgIGRmX3ByaW50OiBwYWdlZA0KICBwZGZfZG9jdW1lbnQ6IGRlZmF1bHQNCi0tLQ0KDQoNCmBgYHtyIERhdGEsIHdhcm5pbmc9RkFMU0UsZWNobz1GQUxTRSxtZXNzYWdlPUZBTFNFfQ0KcmVxdWlyZShkYXRhLnRhYmxlKQ0KcmVxdWlyZShwaHlsb3NlcSkNCnJlcXVpcmUoZ2dwbG90MikNCnJlcXVpcmUocGxvdGx5KQ0KcmVxdWlyZShEVCkNCnNvdXJjZSgic291cmNlL2Z1bmN0aW9ucy5SIikNCg0KIyBMb2FkIGRhdGEtLS0tDQojIENvdW50cw0KbG9hZCgiZGF0YS9wcy5SRGF0YSIpDQoNCiMgVGF4b25vbXkNCmxvYWQoImRhdGEvdGF4YS5wbHVzLlJEYXRhIikNCnRheGEgPC0gZGF0YS50YWJsZShzZXExNnMgPSByb3duYW1lcyh0YXhhLnBsdXMpLA0KICAgICAgICAgICAgICAgICAgIHRheGEucGx1cykNCg0KIyBTYW1wbGVzDQojIHBzQHNhbV9kYXRhDQpsb2FkKCJkYXRhL3NhbXBsZXMuUkRhdGEiKQ0Kc2FtcGxlcyRTYW1wbGUgPC0gc3Vic3RyKHggPSBzYW1wbGVzJE5hbWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSAxLA0KICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AgPSA1KQ0Kc2FtcGxlcyRTYW1wbGVbc2FtcGxlcyRTYW1wbGUgJWluJSBjKCI0QV9TMSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjRCX1MyIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNENfUzMiKV0gPC0gDQogIHN1YnN0cih4ID0gc2FtcGxlcyRTYW1wbGVbc2FtcGxlcyRTYW1wbGUgJWluJSBjKCI0QV9TMSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0Ql9TMiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0Q19TMyIpXSwNCiAgICAgICAgIHN0YXJ0ID0gMSwNCiAgICAgICAgIHN0b3AgPSAyKQ0KRFQ6OmRhdGF0YWJsZShzYW1wbGVzKQ0KYGBgDQoNCiMjIyBUYXhvbm9teSBSYW5rczoNCiMjIyMgKipLKippbmcgKipQKipoaWxsaXAgKipDKiphbiBuKipPKip0ICoqRioqaW5kICoqRyoqcmVlbiAqKlMqKm9ja3MNCiogS2luZ2RvbSAgICAgICAgICAgICAgICANCiogUGh5bHVtICAgICAgICAgICAgICAgICAgICANCiogQ2xhc3MgICAgICAgICAgICAgICAgICAgDQoqIE9yZGVyICAgICAgICAgICAgICAgICAgIA0KKiBGYW1pbHkgICAgIA0KKiBHZW51cyAgICAgDQoqIFNwZWNpZXMgIA0KDQojIyMgUmljaG5lc3MNCmBgYHtyIFJpY2huZXNzLCB3YXJuaW5nPUZBTFNFLGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRX0NCiMgUGFydCBJOiBrZWVwIGNvbnRyb2xzIGFuZCBQRUlUQ3MgYXQgd2Vla3MgNSBhbmQgOSBvbmx5DQojIHc1OSA8LSBwcnVuZV9zYW1wbGVzKHNhbXBsZXMgPSBzYW1wbGVfbmFtZXMocHMpWyEoc2FtcGxlX25hbWVzKHBzKSAlaW4lDQojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKCI0QSIsDQojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0QiIsDQojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0QyIsDQojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmRldGVybWluZWQiKSldLCANCiMgICAgICAgICAgICAgICAgICAgICB4ID0gcHMpDQp3NTkgPC0gcHJ1bmVfc2FtcGxlcyhzYW1wbGVzID0gc2FtcGxlX25hbWVzKHBzKVtzYW1wbGVfbmFtZXMocHMpICE9ICJVbmRldGVybWluZWQiXSwgDQogICAgICAgICAgICAgICAgICAgIHggPSBwcykNCg0KcDEgPC0gcGxvdF9yaWNobmVzcyh3NTksDQogICAgICAgICAgICAgIHggPSAiRGlldF9XZWVrIiwgDQogICAgICAgICAgICAgIG1lYXN1cmVzID0gIlNoYW5ub24iLA0KICAgICAgICAgICAgICBjb2xvciA9ICJXZWVrIikgKw0KICBnZW9tX2xpbmUoYWVzKGdyb3VwID0gSUQpLA0KICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siKSArDQogIGdlb21fcG9pbnQoc2hhcGUgPSAyMSwNCiAgICAgICAgICAgICBzaXplID0gMywNCiAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIpDQpnZ3Bsb3RseShwMSkNCmBgYA0KDQojIyBSZWxhdGl2ZSBBYnVuZGFuY2UgaW4gU2FtcGxlcyBhdCBEaWZmZXJlbnQgVGF4b25vbWljIFJhbmtzDQpgYGB7ciBUYXgsIHdhcm5pbmc9RkFMU0UsZWNobz1GQUxTRSxtZXNzYWdlPUZBTFNFfQ0KIyBPVFUgdGFibGUNCm90dSA8LSB0KHc1OUBvdHVfdGFibGVALkRhdGEpDQpvdHUgPC0gZGF0YS50YWJsZShzZXExNnMgPSByb3duYW1lcyhvdHUpLA0KICAgICAgICAgICAgICAgICAgb3R1KQ0KDQojIE1lcmdlIHRheG9ub215IGFuZCBjb3VudHMgdGFibGVzLS0tLQ0KZHQxIDwtIG1lcmdlKHRheGEsDQogICAgICAgICAgICAgb3R1LA0KICAgICAgICAgICAgIGJ5ID0gInNlcTE2cyIpDQpkdDEkc2VxMTZzIDwtIE5VTEwNCg0KIyBSZW1vdmUgYXJjaGVhIGFuZCBldWNhcnlvdGEtLS0tDQpkdDEgPC0gZHJvcGxldmVscyhkdDFbS2luZ2RvbSA9PSAiQmFjdGVyaWEiLCBdKQ0KDQojIENvdW50cw0KY291bnRzIDwtIGR0MVssIA0KICAgICAgICAgICAgICA4Om5jb2woZHQxKSwNCiAgICAgICAgICAgICAgd2l0aCA9IEZBTFNFXQ0KDQojIFNhbXBsZSBsZWdlbmQNCnNsZWdlbmQgPC0gcHNAc2FtX2RhdGENCmBgYA0KDQojIyMgMS4gQ2xhc3MNCmBgYHtyIENsYXNzLCB3YXJuaW5nPUZBTFNFLGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRSxmaWcud2lkdGg9MTAsZmlnLmhlaWdodD03fQ0KIyAxLiBBZ2dyZWdhdGUgY291bnRzIGJ5IENsYXNzLS0tLQ0KZHQuYyA8LSBsYXBwbHkoY291bnRzLA0KICAgICAgICAgICAgICAgZnVuY3Rpb24oYSkgew0KICAgICAgICAgICAgICAgICBvdXQgPC0gYWdncmVnYXRlKHggPSBhLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gbGlzdChDbGFzcyA9IGR0MSRDbGFzcyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlVOID0gInN1bSIpDQogICAgICAgICAgICAgICB9KQ0KDQpkdC5jIDwtIFJlZHVjZShmID0gZnVuY3Rpb24oLi4uKXttZXJnZSguLi4sIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSAiQ2xhc3MiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsID0gVFJVRSl9LA0KICAgICAgICAgICAgICAgeCA9IGR0LmMpDQpjb2xuYW1lcyhkdC5jKVstMV0gPC0gY29sbmFtZXMoY291bnRzKQ0KDQojIFJlbGF0aXZlIGFidW5kYW5jZS0tLS0NCmR0ci5jIDwtIGRhdGEudGFibGUoYXBwbHkoZHQuY1ssIC0xXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oYSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEvc3VtKGEpDQogICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQ0KZHRyLmMkQ2xhc3MgPC0gZHQuYyRDbGFzcw0KDQpkdHIuYyA8LSBtZWx0LmRhdGEudGFibGUoZGF0YSA9IGR0ci5jLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGlkLnZhcnMgPSBuY29sKGR0ci5jKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJlLnZhcnMgPSAxOihuY29sKGR0ci5jKSAtIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLm5hbWUgPSAiU2FtcGxlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5uYW1lID0gIlJBIikNCg0KIyBNZXJnZSBjb3VudHMgYW5kIHNhbXBsZSBpbmZvLS0tLQ0KZHRyLmMgPC0gbWVyZ2Uoc2FtcGxlcywNCiAgICAgICAgICAgICAgIGR0ci5jLA0KICAgICAgICAgICAgICAgYnkgPSAiU2FtcGxlIikNCiNkdHIuYyRXZWVrIDwtIGZhY3RvcihkdHIuYyRXZWVrKQ0KZHRyLmMkU2FtcGxlIDwtIGZhY3RvcihkdHIuYyRTYW1wbGUsDQogICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IHVuaXF1ZShkdHIuYyRTYW1wbGUpKQ0KDQpwMSA8LSBnZ3Bsb3QoZHRyLmNbb3JkZXIoUkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgZGVjcmVhc2luZyA9IFRSVUUpLCBdLA0KICAgICAgIGFlcyh4ID0gU2FtcGxlLA0KICAgICAgICAgICB5ID0gUkEsDQogICAgICAgICAgIGZpbGwgPSBDbGFzcywNCiAgICAgICAgICAgZ3JvdXAgPSBEaWV0KSkgKw0KICBmYWNldF93cmFwKH4gV2VlayArIERpZXQsDQogICAgICAgICAgICAgc2NhbGVzID0gImZyZWVfeCIsDQogICAgICAgICAgICAgbnJvdyA9IDEpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIpICsNCiAgc2NhbGVfeV9jb250aW51b3VzKGV4cGFuZCA9IGMoMCwgMCkpICsNCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSksDQogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLA0KICAgICAgICBsZWdlbmQuZGlyZWN0aW9uID0gImhvcml6b250YWwiLA0KICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoanVzdCA9IDEpKQ0KZ2dwbG90bHkocDEpDQpgYGANCg0KIyMjIDIuIE9yZGVyDQpgYGB7ciBPcmRlciwgd2FybmluZz1GQUxTRSxlY2hvPUZBTFNFLG1lc3NhZ2U9RkFMU0UsZmlnLndpZHRoPTEwLGZpZy5oZWlnaHQ9N30NCmR0Lm8gPC0gbGFwcGx5KGNvdW50cywNCiAgICAgICAgICAgICAgIGZ1bmN0aW9uKGEpIHsNCiAgICAgICAgICAgICAgICAgb3V0IDwtIGFnZ3JlZ2F0ZSh4ID0gYSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9IGxpc3QoQ2xhc3MgPSBkdDEkQ2xhc3MsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyID0gZHQxJE9yZGVyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVU4gPSAic3VtIikNCiAgICAgICAgICAgICAgIH0pDQoNCmR0Lm8gPC0gUmVkdWNlKGYgPSBmdW5jdGlvbiguLi4pe21lcmdlKC4uLiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9IGMoIkNsYXNzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3JkZXIiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCA9IFRSVUUpfSwNCiAgICAgICAgICAgICAgIHggPSBkdC5vKQ0KY29sbmFtZXMoZHQubylbLWMoMToyKV0gPC0gY29sbmFtZXMoY291bnRzKQ0KDQojIFJlbGF0aXZlIGFidW5kYW5jZS0tLS0NCmR0ci5vIDwtIGRhdGEudGFibGUoYXBwbHkoZHQub1ssIC1jKDE6MildLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihhKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS9zdW0oYSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpDQpkdHIubyRDbGFzcyA8LSBkdC5vJENsYXNzDQpkdHIubyRPcmRlciA8LSBkdC5vJE9yZGVyDQoNCmR0ci5vIDwtIG1lbHQuZGF0YS50YWJsZShkYXRhID0gZHRyLm8sDQogICAgICAgICAgICAgICAgICAgICAgICAgaWQudmFycyA9IChuY29sKGR0ci5vKSAtIDEpOm5jb2woZHRyLm8pLA0KICAgICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmUudmFycyA9IDE6KG5jb2woZHRyLm8pIC0gMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUubmFtZSA9ICJTYW1wbGUiLA0KICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLm5hbWUgPSAiUkEiKQ0KDQojIE1lcmdlIGNvdW50cyBhbmQgc2FtcGxlIGluZm8tLS0tDQpkdHIubyA8LSBtZXJnZShzYW1wbGVzLA0KICAgICAgICAgICAgICAgZHRyLm8sDQogICAgICAgICAgICAgICBieSA9ICJTYW1wbGUiKQ0KZHRyLm8kU2FtcGxlIDwtIGZhY3RvcihkdHIubyRTYW1wbGUsDQogICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IHVuaXF1ZShkdHIubyRTYW1wbGUpKQ0KDQpwMSA8LSBnZ3Bsb3QoZHRyLm9bb3JkZXIoUkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgZGVjcmVhc2luZyA9IFRSVUUpLCBdLA0KICAgICAgICAgICAgIGFlcyh4ID0gU2FtcGxlLA0KICAgICAgICAgICAgICAgICB5ID0gUkEsDQogICAgICAgICAgICAgICAgIGNvbG9yID0gQ2xhc3MsDQogICAgICAgICAgICAgICAgIGZpbGwgPSBPcmRlciwNCiAgICAgICAgICAgICAgICAgZ3JvdXAgPSBEaWV0KSkgKw0KICBmYWNldF93cmFwKH4gV2VlayArIERpZXQsDQogICAgICAgICAgICAgc2NhbGVzID0gImZyZWVfeCIsDQogICAgICAgICAgICAgbnJvdyA9IDEpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIpICsNCiAgc2NhbGVfeV9jb250aW51b3VzKGV4cGFuZCA9IGMoMCwgMCkpICsNCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSksDQogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhqdXN0ID0gMSkpDQpnZ3Bsb3RseShwMSkNCmBgYA0KDQojIyMgMy4gRmFtaWx5DQpgYGB7ciBGYW1pbHksIHdhcm5pbmc9RkFMU0UsZWNobz1GQUxTRSxtZXNzYWdlPUZBTFNFLGZpZy53aWR0aD0xMCxmaWcuaGVpZ2h0PTd9DQojIDMuIEFnZ3JlZ2F0ZSBjb3VudHMgYnkgRmFtaWx5LS0tLQ0KZHQuZiA8LSBsYXBwbHkoY291bnRzLA0KICAgICAgICAgICAgICAgZnVuY3Rpb24oYSkgew0KICAgICAgICAgICAgICAgICBvdXQgPC0gYWdncmVnYXRlKHggPSBhLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gbGlzdChDbGFzcyA9IGR0MSRDbGFzcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFtaWx5ID0gZHQxJEZhbWlseSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlVOID0gInN1bSIpDQogICAgICAgICAgICAgICB9KQ0KDQpkdC5mIDwtIFJlZHVjZShmID0gZnVuY3Rpb24oLi4uKXttZXJnZSguLi4sIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSBjKCJDbGFzcyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhbWlseSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsID0gVFJVRSl9LA0KICAgICAgICAgICAgICAgeCA9IGR0LmYpDQpjb2xuYW1lcyhkdC5mKVstYygxOjIpXSA8LSBjb2xuYW1lcyhjb3VudHMpDQoNCiMgUmVsYXRpdmUgYWJ1bmRhbmNlLS0tLQ0KZHRyLmYgPC0gZGF0YS50YWJsZShhcHBseShkdC5mWywgLWMoMToyKV0sDQogICAgICAgICAgICAgICAgICAgICAgICAgIDIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhL3N1bShhKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkNCmR0ci5mJENsYXNzIDwtIGR0LmYkQ2xhc3MNCmR0ci5mJEZhbWlseSA8LSBkdC5mJEZhbWlseQ0KDQpkdHIuZiA8LSBtZWx0LmRhdGEudGFibGUoZGF0YSA9IGR0ci5mLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGlkLnZhcnMgPSAobmNvbChkdHIuZikgLSAxKTpuY29sKGR0ci5mKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJlLnZhcnMgPSAxOihuY29sKGR0ci5mKSAtIDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLm5hbWUgPSAiU2FtcGxlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5uYW1lID0gIlJBIikNCg0KIyBNZXJnZSBjb3VudHMgYW5kIHNhbXBsZSBpbmZvLS0tLQ0KZHRyLmYgPC0gbWVyZ2Uoc2FtcGxlcywNCiAgICAgICAgICAgICAgIGR0ci5mLA0KICAgICAgICAgICAgICAgYnkgPSAiU2FtcGxlIikNCmR0ci5mJFNhbXBsZSA8LSBmYWN0b3IoZHRyLmYkU2FtcGxlLA0KICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSB1bmlxdWUoZHRyLmYkU2FtcGxlKSkNCg0KcDEgPC0gZ2dwbG90KGR0ci5mW29yZGVyKFJBLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGRlY3JlYXNpbmcgPSBUUlVFKSwgXSwNCiAgICAgICAgICAgICBhZXMoeCA9IFNhbXBsZSwNCiAgICAgICAgICAgICAgICAgeSA9IFJBLA0KICAgICAgICAgICAgICAgICBjb2xvciA9IENsYXNzLA0KICAgICAgICAgICAgICAgICBmaWxsID0gRmFtaWx5LA0KICAgICAgICAgICAgICAgICBncm91cCA9IERpZXQpKSArDQogIGZhY2V0X3dyYXAofiBXZWVrICsgRGlldCwNCiAgICAgICAgICAgICBzY2FsZXMgPSAiZnJlZV94IiwNCiAgICAgICAgICAgICBucm93ID0gMSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IikgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMoZXhwYW5kID0gYygwLCAwKSkgKw0KICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41KSwNCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGp1c3QgPSAxKSkNCmdncGxvdGx5KHAxKQ0KYGBgDQoNCiMjIyA0LiBHZW51cw0KYGBge3IgR2VudXMsIHdhcm5pbmc9RkFMU0UsZWNobz1GQUxTRSxtZXNzYWdlPUZBTFNFLGZpZy53aWR0aD0xMCxmaWcuaGVpZ2h0PTd9DQpkdC5nIDwtIGxhcHBseShjb3VudHMsDQogICAgICAgICAgICAgICBmdW5jdGlvbihhKSB7DQogICAgICAgICAgICAgICAgIG91dCA8LSBhZ2dyZWdhdGUoeCA9IGEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSBsaXN0KENsYXNzID0gZHQxJENsYXNzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW51cyA9IGR0MSRHZW51cyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlVOID0gInN1bSIpDQogICAgICAgICAgICAgICB9KQ0KDQpkdC5nIDwtIFJlZHVjZShmID0gZnVuY3Rpb24oLi4uKXttZXJnZSguLi4sIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSBjKCJDbGFzcyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdlbnVzIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGwgPSBUUlVFKX0sDQogICAgICAgICAgICAgICB4ID0gZHQuZykNCmNvbG5hbWVzKGR0LmcpWy1jKDE6MildIDwtIGNvbG5hbWVzKGNvdW50cykNCg0KIyBSZWxhdGl2ZSBhYnVuZGFuY2UtLS0tDQpkdHIuZyA8LSBkYXRhLnRhYmxlKGFwcGx5KGR0LmdbLCAtYygxOjIpXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oYSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEvc3VtKGEpDQogICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQ0KZHRyLmckQ2xhc3MgPC0gZHQuZyRDbGFzcw0KZHRyLmckR2VudXMgPC0gZHQuZyRHZW51cw0KDQpkdHIuZyA8LSBtZWx0LmRhdGEudGFibGUoZGF0YSA9IGR0ci5nLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGlkLnZhcnMgPSAobmNvbChkdHIuZykgLSAxKTpuY29sKGR0ci5nKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJlLnZhcnMgPSAxOihuY29sKGR0ci5nKSAtIDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLm5hbWUgPSAiU2FtcGxlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5uYW1lID0gIlJBIikNCg0KIyBNZXJnZSBjb3VudHMgYW5kIHNhbXBsZSBpbmZvLS0tLQ0KZHRyLmcgPC0gbWVyZ2Uoc2FtcGxlcywNCiAgICAgICAgICAgICAgIGR0ci5nLA0KICAgICAgICAgICAgICAgYnkgPSAiU2FtcGxlIikNCmR0ci5nJFNhbXBsZSA8LSBmYWN0b3IoZHRyLmckU2FtcGxlLA0KICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSB1bmlxdWUoZHRyLmckU2FtcGxlKSkNCg0KcDEgPC0gZ2dwbG90KGR0ci5nW29yZGVyKFJBLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGRlY3JlYXNpbmcgPSBUUlVFKSwgXSwNCiAgICAgICAgICAgICBhZXMoeCA9IFNhbXBsZSwNCiAgICAgICAgICAgICAgICAgeSA9IFJBLA0KICAgICAgICAgICAgICAgICBjb2xvciA9IENsYXNzLA0KICAgICAgICAgICAgICAgICBmaWxsID0gR2VudXMsDQogICAgICAgICAgICAgICAgIGdyb3VwID0gRGlldCkpICsNCiAgZmFjZXRfd3JhcCh+IFdlZWsgKyBEaWV0LA0KICAgICAgICAgICAgIHNjYWxlcyA9ICJmcmVlX3giLA0KICAgICAgICAgICAgIG5yb3cgPSAxKSArDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArDQogIHNjYWxlX3lfY29udGludW91cyhleHBhbmQgPSBjKDAsIDApKSArDQogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpLA0KICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoanVzdCA9IDEpKQ0KZ2dwbG90bHkocDEpDQpgYGANCg0KIyMgTWVhbiBSZWxhdGl2ZSBBYnVuZGFuY2VzDQojIyMgMS4gTWVhbiBDbGFzcw0KYGBge3IgTWVhbkNsYXNzLCB3YXJuaW5nPUZBTFNFLGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRSxmaWcud2lkdGg9MTAsZmlnLmhlaWdodD0xMH0NCnQxIDwtIHN1bW1hcml6ZV90YXhhKHBoeXNlcSA9IHBzLA0KICAgICAgICAgICAgICAgICAgICAgUmFuayA9ICJDbGFzcyIsDQogICAgICAgICAgICAgICAgICAgICBHcm91cEJ5ID0gIkRpZXRfV2VlayIpDQpwMSA8LSBwbG90X3RheGFfc3VtbWFyeShwaHlzZXEgPSBwcywNCiAgICAgICAgICAgICAgICAgIFJhbmsgPSAiQ2xhc3MiLA0KICAgICAgICAgICAgICAgICAgR3JvdXBCeSA9ICJEaWV0X1dlZWsiKSArDQogIGdndGl0bGUoIkNsYXNzIikNCmdncGxvdGx5KHAxKQ0KDQpgYGANCg0KIyMjIDIuIE1lYW4gT3JkZXINCmBgYHtyIE1lYW5PcmRlciwgd2FybmluZz1GQUxTRSxlY2hvPUZBTFNFLG1lc3NhZ2U9RkFMU0UsZmlnLndpZHRoPTEwLGZpZy5oZWlnaHQ9MTJ9DQp0MSA8LSBzdW1tYXJpemVfdGF4YShwaHlzZXEgPSBwcywNCiAgICAgICAgICAgICAgICAgICAgIFJhbmsgPSAiT3JkZXIiLA0KICAgICAgICAgICAgICAgICAgICAgR3JvdXBCeSA9ICJEaWV0X1dlZWsiKQ0KcDEgPC0gcGxvdF90YXhhX3N1bW1hcnkocGh5c2VxID0gcHMsDQogICAgICAgICAgICAgICAgICBSYW5rID0gIk9yZGVyIiwNCiAgICAgICAgICAgICAgICAgIEdyb3VwQnkgPSAiRGlldF9XZWVrIikgKw0KICBnZ3RpdGxlKCJPcmRlciIpDQpnZ3Bsb3RseShwMSkNCg0KYGBgDQoNCiMjIyAzLiBNZWFuIEZhbWlseQ0KYGBge3IgTWVhbkZhbWlseSwgd2FybmluZz1GQUxTRSxlY2hvPUZBTFNFLG1lc3NhZ2U9RkFMU0UsZmlnLndpZHRoPTEwLGZpZy5oZWlnaHQ9MTV9DQp0MSA8LSBzdW1tYXJpemVfdGF4YShwaHlzZXEgPSBwcywNCiAgICAgICAgICAgICAgICAgICAgIFJhbmsgPSAiRmFtaWx5IiwNCiAgICAgICAgICAgICAgICAgICAgIEdyb3VwQnkgPSAiRGlldF9XZWVrIikNCnAxIDwtIHBsb3RfdGF4YV9zdW1tYXJ5KHBoeXNlcSA9IHBzLA0KICAgICAgICAgICAgICAgICAgUmFuayA9ICJGYW1pbHkiLA0KICAgICAgICAgICAgICAgICAgR3JvdXBCeSA9ICJEaWV0X1dlZWsiKSArDQogIGdndGl0bGUoIkZhbWlseSIpDQpnZ3Bsb3RseShwMSkNCg0KYGBgDQoNCiMjIyA0LiBNZWFuIEdlbnVzDQpgYGB7ciBNZWFuR2VuZXJhLCB3YXJuaW5nPUZBTFNFLGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRSxmaWcud2lkdGg9MTAsZmlnLmhlaWdodD0yMH0NCnQxIDwtIHN1bW1hcml6ZV90YXhhKHBoeXNlcSA9IHBzLA0KICAgICAgICAgICAgICAgICAgICAgUmFuayA9ICJHZW51cyIsDQogICAgICAgICAgICAgICAgICAgICBHcm91cEJ5ID0gIkRpZXRfV2VlayIpDQpwMSA8LSBwbG90X3RheGFfc3VtbWFyeShwaHlzZXEgPSBwcywNCiAgICAgICAgICAgICAgICAgIFJhbmsgPSAiR2VudXMiLA0KICAgICAgICAgICAgICAgICAgR3JvdXBCeSA9ICJEaWV0X1dlZWsiKSArDQogIGdndGl0bGUoIkdlbnVzIikNCmdncGxvdGx5KHAxKQ0KDQpgYGA=